﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

namespace SumPower.MailAccount.Web
{
    public class MailResponse
    {
        string rawResponse;
        int statusCode;
        string[] parts;

        /// use the Parse method to create instances
        protected MailResponse() { }

        /// the smtp status code FIXME: change to Enumeration?
        public int StatusCode
        {
            get { return statusCode; }
            set { statusCode = value; }
        }

        /// the response as it was recieved
        public string RawResponse
        {
            get { return rawResponse; }
            set { rawResponse = value; }
        }

        /// the response as parts where ; was used as delimiter
        public string[] Parts
        {
            get { return parts; }
            set { parts = value; }
        }

        /// parses a new response object from a response string
        public static MailResponse Parse(string line)
        {
            MailResponse response = new MailResponse();

            if (line.Length < 4)
                throw new Exception("Response is to short " +
                               line.Length + ".");

            if ((line[3] != ' ') && (line[3] != '-'))
                throw new Exception("Response format is wrong.(" +
                             line + ")");

            // parse the response code
            response.StatusCode = Int32.Parse(line.Substring(0, 3));

            // set the rawsponse
            response.RawResponse = line;

            // set the response parts
            response.Parts = line.Substring(0, 3).Split(';');

            return response;
        }
    }

}